import {AxiosRequestConfig} from "axios"
import {ResType} from "st-common-req"
import request from "../request.ts"

/**
 * 以 POST 请求方式提交 form 表单格式的数据<br/>
 * 需要注意的是：使用该方法进行数据的提交，请求的请求头中的 <span style="color:red">
 *     Content-Type 一定会被覆盖设置为 'application/x-www-form-urlencoded'
 * </span>
 *
 * @param url 请求地址
 * @param data 要提交到后端的数据
 * @param config 请求配置
 */
export const postForm = (
    url: string,
    data: Record<string, any> = {},
    config: AxiosRequestConfig<any> = {}
): Promise<ResType> => {
  // 发送 POST 请求
  return request.post(
    url,
    data,
    {
      ...config,
      // 设置请求头
      headers: {
        ...config?.headers,
        // 设置请求头 Content-Type 为 'application/x-www-form-urlencoded'
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    },
  )
}
